package inner_class;

public class AllLambda {
    public static void main(String[] args) {
        //双无对象
//        NoParaNoReturn doublieNo = () -> {
//            System.out.println("无返回值，无参数接口对象");
//        };
//        doublieNo.test();
        //规则1：当方法体只有一行代码时，可以省略大括号。
//        NoParaNoReturn doublieNo = () -> System.out.println("无返回值，无参数接口对象");
//        doublieNo.test();

        //无返回值，有参数
//        HasParaNoReturn hasParaNoReturn = (int x) -> {
//            x += 20;
//            System.out.println(x);
//        };
        /*规则2.若方法的参数只有一个，可以省略小括号
         规则3.可以省略Lambda表达式中参数的类型，若省略类型，都需要省略。*/
//        HasParaNoReturn hasParaNoReturn = x -> {
//            x += 20;
//            System.out.println(x);
//        };
//        hasParaNoReturn.test(7);

//        NoParaHasReturn noParaHasReturn = () -> {
//            int a = 10;
//            int b = 20;
//            return a + b;
//        };
//        NoParaHasReturn noParaHasReturn = () -> 10 + 20;
//        System.out.println(noParaHasReturn.test());

        HasParaHasReturn hasParaHasReturn = (x,y) -> x +=y;
        System.out.println(hasParaHasReturn.test(10,20));
    }
}

interface NoParaNoReturn{
    void test();
}

interface NoParaHasReturn{
    int test();
}

interface HasParaNoReturn{
    void test(int a);
}

interface HasParaHasReturn{
    int test(int a, int b);
}
